<html>
    <head>
        <title>检查状态</title>
    </head>
    <body>
        <script>
            /*
                    三、检查状态

                          1、ISimpleStateCheckerManager<MyObject>  单个状态检查器管理器服务

                                你可以注入ISimpleStateCheckerManager<MyObject> (单个状态检查器管理器服务)来检查状态:

                                        bool enabled = await stateCheckerManager.IsEnabledAsync(myobj);

                          2、批量检查状态 ISimpleBatchStateChecker

                                如果有许多实例项需要状态检查，则可能存在性能问题。

                                在这种情况下，你可以实现ISimpleBatchStateChecker。

                                它可以一次检查多个项目。需要确保相同的ISimpleBatchStateChecker实例被添加到多个实例的SimpleStateCheckers。

                                    SimpleBatchStateCheckerBase继承ISimpleBatchStateChecker接口，默认实现单个对象的IsEnabledAsync方法。

                                eg：

                                    public class MyObjectBatchStateChecker : SimpleBatchStateCheckerBase<MyObject>
                                    {
                                        public override Task<SimpleStateCheckerResult<MyObject>> IsEnabledAsync(SimpleBatchStateCheckerContext<MyObject> context)
                                        {
                                            var result = new SimpleStateCheckerResult<MyObject>(context.States);

                                            foreach (var myObject in context.States)
                                            {
                                                if (myObject.Id > 100)
                                                {
                                                    result[myObject] = true;
                                                }
                                            }

                                            return Task.FromResult(result);
                                        }
                                    }


                                    var myobj1 = new MyObject()
                                    {
                                        Id = 100
                                    };
                                    var myobj2 = new MyObject()
                                    {
                                        Id = 99
                                    };

                                    var myObjectBatchStateChecker = new MyObjectBatchStateChecker();

                                    myobj1.SimpleStateCheckers.Add(myObjectBatchStateChecker);
                                    myobj2.SimpleStateCheckers.Add(myObjectBatchStateChecker);

                                    SimpleStateCheckerResult<MyObject> stateCheckerResult = await stateCheckerManager.IsEnabledAsync(new []{ myobj1, myobj2 });
                */
        </script>
    </body>
</html>